[PowerShell] 帰ってきたOut-GridView
しばたです。
先週PowerShell Team Blogで以下の記事が公開されました。
本記事では少し補足を入れつつこちらの内容を解説していきます。
Out-GridView
Out-GridVeiwとは
Out-GridViewはPowerShell 3.0から導入されたコマンドレットで、パイプラインで渡されたオブジェクトを表形式の別ウィンドウに表示する機能を持っています。
例えば、
Get-Process | Out-GridView
といったコマンドを実行するとGet-Process
の実行結果であるプロセス情報(System.Diagnostics.Process
型のオブジェクト)を表の形で表示できます。
ちなみにこのウィンドウはWindows Presentation Foundation(WPF)製です。
PowerShell CoreでのOut-GridView
本記事のタイトルでわざわざ「帰ってきた」と付けている様にPowerShell CoreではこのOut-GridView
はサポートされていません。
これはPowerShell Coreの基盤となる.NET Coreが現在もWindows FormsやWPFといったGUIフレームワークをサポートしておらず[1]、Out-GridView
やShow-Command
、Get-Help
の-ShowWindow
パラメーターといったGUIウィンドウを表示するコマンドレットや機能は全て削除されています。
こういった現状があり、Windows PowerShellで使われていたGUIの機能をどの様に移植していくかに関しては長い間GitHub上で議論されていたのですが、目下のところGUIに係る機能を別モジュールで追加可能にする形を選んだ様です。
議論の詳細については上記リンクを参照してください。
帰ってきたOut-GridView
ここまでの前提を踏まえて、新しいMicrosoft.PowerShell.GraphicalToolsモジュールの機能としてOut-GridView
がリリースされました。
こちらはGUIフレームワークにAvalonia[2]を採用し、Windows、macOS、Linux(GTK3)の各プラットフォームで動作します。
(上図は https://devblogs.microsoft.com/powershell/out-gridview-returns/ より引用)
動作環境
動作環境としてはWindows、macOS、Linux(GTK3)のPowerShell Core 6.2以降となります。
インストール方法
PowerShell Galleryよりインストール可能です。
Install-Module Microsoft.PowerShell.GraphicalTools
帰ってきたOut-GridView
現在このMicrosoft.PowerShell.GraphicalToolsモジュールで提供される機能はOut-GridView
ただ一つです。
基本的にはこれまでのOut-GridView
と同様の機能を持っていますが、Filterと列の選択UIが若干異なります。
独自機能として画面右に「Show Code」ボタンがあり、こちらをクリックすると現在Filterに指定されている条件をPowerShellコード化してくれます。
今後の見通し
一通りの機能を備えてはいますがバージョンとしては現時点でVer.0.2.0で作りが荒い部分がまだまだ多く見られ、また、モジュール内部で各プラットフォーム向けのアセンブリをすべて内包しているためサイズが展開後で約280MBとあまりも巨大な現状があり、こういった点は今後改善されていくでしょう。
そして機能的にはOut-GridView
だけでなくShow-Command
やShow-Objectといったコマンドレットをサポートしていく予定となっています。
ただ、Microsoftの名を冠したモジュールではあるもののTUIによるOut-GridView
実装に対する要望も根強く残っており、あくまで個人的な気持ちですが、このモジュールがすんなりコミュニティに受け入れられるか怪しいと思うところがあります。
そういった部分も合わせてこのモジュールが今後どの様に発展していくのか追いかけていきたいと思います。